perm filename NET.JAM[UP,DOC]6 blob sn#116167 filedate 1974-08-19 generic text, type C, neo UTF8
COMMENT ⊗   VALID 00019 PAGES
C REC  PAGE   DESCRIPTION
C00001 00001
C00003 00002	DIAL PROGRAM:
C00005 00003	PTYJOB PROGRAM:
C00006 00004	TELNET PROGRAM:
C00009 00005			TABLE OF HOST MNEMONICS
C00012 00006		First, some network definitions are in order.
C00016 00007		More definitions
C00018 00008		How to Use the TELNET
C00022 00009	CAN'T CHANGE SOCKETS
C00025 00010		Now  that  you  know  all of the things that go wrong, let us
C00029 00011	αβE
C00033 00012	βF
C00035 00013			IMP System Calls
C00039 00014		If  HDEAD  comes up, this means that the last message we sent
C00043 00015		    Special MTAPE UUOs
C00047 00016	function=2	Status
C00050 00017	function=7	Get socket numbers and host number
C00053 00018	function=13	Set allocation
C00057 00019	system default values are 6 sec for CLS, 40 sec for RFNM, no  timeout
C00059 ENDMK
C⊗;
DIAL PROGRAM:
	DIAL is a modified user TELNET program  which uses a teletype
connection  instead of  an IMP.  The purpose is  to allow  calling up
other computers  through their  dataphones. This  is accomplished  by
initing a dataset  here and dialing it. Either manually,  or by using
the automatic phone dialer on TTY11.

The following is the syntax for the monitor DIAL command:

DIAL <sixbit TTY name> <cr>

	or

DIAL {"("<3 digit area code>")"}<3 digit prefix> {"-"} <4 digit number> <cr>

	If there is an error in your arguments, DIAL will type "Error
in TTY  name or phone number"  and prompt you for  the name or number
again. If you give a  TTY name, the TTY  is just inited. You must  go
dial the dataphone yourself. Be sure you have successfully inited the
TTY  associated with the dataphone before you  dial it. If you give a
phone number,  TTY11 is inited and the number dialed on the automatic
phone  dialer.  For  any  further  information on  operation  consult
R. Helliwell.

Examples of DIAL command:

	DIAL TTY10	Inits TTY10, you must dial.

	DIAL 493-5505	Inits TTY11 and dials the number
			shown which is TTY10.
PTYJOB PROGRAM:
	The PTYJOB  program is  similar to  the DIAL program,  except
that it gets a PTY instead  of a TTY (dataphone). It  is also able to
keep the local/remote echoing states consistent.
TELNET PROGRAM:
	The Stanford interface to the  ARPA  network  consists  of  a
general  purpose piece of software in the time-sharing monitor, and a
set of user-level programs. The principal  program  used  is  T ,
often  refered  to  as our user-TELNET program. This program provides
the user with the ability to connect to a serving host as if he  were
typing on a local teletype.
	Some important differences exist between using the TELNET and
a  local terminal. One obvious problem is that certain characters are
absorbed by Stanford's time-sharing system before  they  get  to  the
TELNET,  (like  control-C,  control-Z, etc.), thus necessitating some
character mapping and some escape conventions. The way it works is as
follows.     To    type    some    control   character,   one   types
<CONTROL><character> and the TELNET will translate the character  and
send  it  out.  <META><character>  and <CONTROL><META><character> are
special commands to the TELNET for switching modes and are  described
below.
	When the TELNET is started up by typing "R T", it  first
asks  you  for  the site of the computer you wish to connect to.  The
sites  on  the  network  have  mnemonic  names,   assigned   somewhat
arbitrarily, and may be recognized by either their long name or their
short name, or just enough characters to make the name unique. A list
of  the  current  mnemonics  and their decimal site numbers are given
below:
		TABLE OF HOST MNEMONICS

This list is rather out of date.  For a complete list see NAMES[NET,SYS]

LONG NAME      SHORT   SITE            COMMENTS

UCLA-NMC	NMC	1	Network Measurement Center.
				Sigma-7, very crowded.
UCLA-CCN	CCN	65	Campus computation center.
				360-91, remote job entry only.
SRI-ARC		NIC	2	Englebart's group.
				Allows network users NLS only.
SRI-AI		SRAI	66	SRI Artificial Intelligence group
UCSB		UCSB	3	Offers On-Line-System only.
				Desk calculator service.
UTAH		UTAH	4	They use TENEX. Also are core-bound.
BBN-NCC		NCC	5
BBN		BBN	69	This is where TENEX came from.
BBN-B		BBNB	133	BBN's other PDP-10.
MIT-MLTX	MLTX	6	World's slowest system.
MIT-DMCG	DMCG	70	Dynamic modeling group.
				Down the hall from AI.
MIT-AI		AI	134	Exec DDT, No password needed.
MIT-MATHLAB	ML	198	Exec DDT, No password needed.
RAND-65		RAND	7
RAND-10		RND1	71	TENEX, supposedly a service center.
SDC		SDC	8
HARV-10		HARV	9
HARV-1		HRV1	73
HARV-11		HRV2	137
LL-67	LL67	10
LL-TX2		TX2	74
LL-TSP		TSP	138
SU-AI		SAIL	11	Modified DEC system, no password needed, 
				very busy.
SU-HP		SUHP	75
ILL-11		ILL11	12
ILL-B65		ILL	76
CASE		CASE	13
CMU		CMU	14	DEC 10-50 system.
BURROUGHS	BURR	15
PAOLI		PAOLI	79
AMES-67		AMES	16
AMES-TIP	AMET	144
MITR-TIP	MTRT	145
RADC		RADC	18
RADC-TIP	RADT	146
NBS		NBS	19
NBS-TIP		NBST	147
ETAC-TIP	ETAT	148
TINKER		OCAF	21
MCLELLAN	SMAF	22
USC		USC	23
USC-TIP		USCT	151
GWC-TIP		GWCT	152
NCAR		NCAR	25
NCAR-TIP	NCAT	153
BBN-TIP		BBNT	158


	First, some network definitions are in order.
NCP
	This is the software in the monitor that services the IMP.

TELNET
	The thing you type into that sends your characters off  to  a
foreign  site  is a user TELNET program. The thing that receives them
at the other end and passes them on to the time-sharing monitor there
is the server TELNET. These are generally user-level programs

SOCKET
	When  you log in on another system, unknown to you, there are
four socket numbers involved. There is a local send socket number,  a
local  receive  socket  number,  a  foreign send socket number, and a
foreign receive socket numbers. These numbers are internal connection
indexes  and  are  used  to keep different connections separate. Each
connection has a unique set of 4 socket numbers.

LOGGER
	Each  site is supposed to provide a program that does nothing
but sit around and listen to  socket  1.  When  someone  connects  to
socket 1, the LOGGER is supposed to send it back a socket number that
the foreign host can use to connect to the LOGGER's host on. Only the
serving  host  knows what socket numbers it can service and it is the
job of the LOGGER to pass out these numbers.

RFC
	Request for connection. This is how a pair of hosts establish
a connection. The originating host sends an RFC  πo  the  destination
host  with  a  local  socket  number  and  a foreign socket number as
arguments. The  destination  host  can  complete  the  connection  by
returning  an  RFC  with  the  same socket numbers, or can refuse the
connection by returning a close code.

LINK
	Once  a  connection  is  established, an 8-bit link number is
assigned such that the 8-bit host number concatenated with the  8-bit
link  number  is  unique  at  both ends of the connection. During the
lifetime of the connection, the link number is used to  separate  the
connections,  being  as  how the socket numbers are 32-bits long. The
IMP itself is programmed in such a way that only one message  may  be
in  transit  on  a  particular  link  at  a time. The IMP signals the
sending host that  the  message  has  arrived  by  returning  a  RFNM
(request   for new message) with that link number as an argument. All
of this is invisible to the user.


	More definitions

CONTROL MESSAGES
	Data is sent between hosts on a non-zero  link  number.  Link
zero  is  defined  as  the  control  link, on which hosts communicate
regarding the connections. All host to  host  protocol  messages  are
exchanged on link zero.

ALLOCATION
	The host to host protocol defines a kind of flow control on a
higher  level  than  the RFNM control. This is the allocation system.
When a connection is first established, the receiving  host  sends  a
control  message  telling the sending host how many bits and messages
can conveniently be buffered. The sending host  must  then  not  send
more  than  that  many  bits  or  messages  without  waiting for more
allocation from the receiving host. Although much of this  is  unseen
to the user, the user has control over how much allocation the system
will give the remote host. For data and file transfer purposes, it is
convenient to increase the allocation over the system default amount.


	How to Use the TELNET

	Our user TELNET program is called TELNET. When it is started,
it  first  asks  for  a  site to connect to. You may then type enough
characters as needed to recognize the site name. The TELNET will then
attempt to connect to the site. It types out its progress as it goes.
When  the  connection   is   completed,   the   message   "Connection
Established"  is  typed  out.  All  hosts  have an initial connection
message which should appear next.
	It can type out many things other than the success statement,
so let me describe the error typeouts next:

CONNECTION HAS BEEN CLOSED
	This means just what it says. The host has voluntarily broken
the connection for reasons known only to himself.

RESET RECEIVED FROM HOST
	The host has sent us a reset command which directs our NCP to
break all connections to this host and clear our tables of everything
it knows (regarding previous connections) about this host. Some sites
(namely CMU and Harvard) will send a reset the first time you connect
to  them  as  standard  procedure.   In  this case, trying again will
succeed. In the more normal case, this means the host has crashed and
just been brought up again.

HOST DEAD
	This means that the RFC got to the host's IMP,  but  was  not
read  from  the  IMP  within  90 seconds, and the IMP timed out. This
generally means the host is really down. When this happens,  the  NCP
remebers  that the host in question was down so that it does not have
to wait for the 90 second timeout. In this case a connection  is  not
even attempted. If you want the system to attempt the connection even
though  it  thinks  the  host is dead, end the host name with altmode
instead of carraige return.

DATA QUOTA OVERFLOW
	The  host  is not conforming to protocol and has sent us more
data than we allocated him. We are breaking the connection.

END OF FILE
	Doesn't occur in normal circumstances.

SOCKET IN USE
	Generally  happens  after  an  aborted  attempt to connect to
someone else. This means the foreign host  suddenly  sprang  to  life
after the TELNET timed out and sent us an RFC from a different socket
than he told us he has now. This cures itself in a few minutes.


CAN'T CHANGE SOCKETS
SYSTEM ERROR
NO LINKS AVAILABLE
ILLEGAL BYTE SIZE
	These  all  indicate  horrible  system  errors of one form or
another and should not happen.

IMP DEAD
	The  interface  has begun to malfunction, the network control
center has brought the IMP down, or someone here has given the  magic
UUO that brings the IMP software down.

HOST NOT RESPONDING
	One of the various timeouts inside the TELNET or system  went
off.  The  TELNET  times  out generally when a message is sent to the
foreign host which demands a response and no  response  was  received
within a "reasonable" time.

	The following messages appear only in conjunction with one of
the  above  messages and indicates only the point in TELNET where the
error occurred.

CAN'T CONNECT TO LOGGER
	The  error  occurred  on  the  initial RFC to get the foreign
host's logger.

DIDN'T GET SOCKET NUMBER FROM LOGGER
	We  exchanged  RFC's  with  the  foreign  host's  logger, but
somehow he did not send us a socket number.

CAN'T CONNECT TO RECEIVE SIDE
	We  got  a  socket number from the logger and tried to open a
connection on that socket when the error occurred.

CAN'T CONNECT TO SEND SIDE
	We  got the socket number and successfully sent an RFC to the
receive socket, but we hit an error when trying to send an RFC to the
send socket.

ERROR WHILE WAITING FOR RECEIVE SIDE
	This means that we successfully sent RFC's to  the  send  and
receive sockets, but we got an error while waiting for the return RFC
on the receive side.

ERROR ON OUTPUT
ERROR ON INPUT
	These are given after the connection is established and refer
to errors that occurred while doing output or input.


	Now  that  you  know  all of the things that go wrong, let us
proceed to the options available once the connection is  successfully
established.   Normally, everything you type will be sent directly to
the foreign host. The TELNET's idle state is in interrupt wait  queue
(INTW). An abnormal state might be if it hung in IO wait queue (IOW).
	Characters typed with <CONTROL> held down are interpreted  as
control  characters, that is, they are made into upper case, then 100
is subtracted from the character code, then they are sent. So to type
↑C  at a remote job, you need only type <CONTROL>C. The effect of the
<CONTROL> and <META> keys may be simulated on a teletype by using ↑E.
One  ↑E  means  <CONTROL>,  two ↑Es means <META>, and three ↑Es means
<CONTROL><META>. Characters with <META> or  <CONTROL><META>  are  not
sent to the foreign host but are interpreted locally by the TELNET as
instructions to the TELNET.  I  shall  abbreviate  <META>  as  β  and
<CONTROL><META> as αβ. ⊗ will be used if either β or αβ will work.

		CONTROL COMMANDS TO THE TELNET

⊗<number>
	An octal argument is assembled from digits typed this way.


<octal arg>⊗S
	Sends the  octal argument  as a  single ASCII character.  For
instance, ⊗1⊗0⊗1⊗S is the hard way to send an "A".

⊗S (no arg)
	Send. If the TELNET is in line  mode, this command causes all
the characters typed so far to be sent to the foreign host. Normally,
the characters  are  sent only  when  CR,  LF, ALT-MODE,  or  control
character are  typed when in line  mode.  This command  is not useful
for  teletypes, because typing ↑E↑ES does  not cause an activation in
line mode.

βL
	Enter line mode.

αβL
	Enter  full  character set mode. In this mode, each character
is an activation character, and is sent individually to  the  foreign
host when it is typed. This is useful for using DDT at a remote host.

βE
	Begin  local  echoing.  Also  attempts  to  turn  off  remote
echoing.  Different sites have  different echoing  conventions.  Some
sites expect to send back echoing, some do not. If you find that what
you type is not being echoed in  a reasonable time,  you may use this
command to let you see what you are typing. In the DIAL program, this
makes you look like a half duplex terminal. It also does  not  change
the state of remote echoing.
αβE
	Terminate local  echoing.   Also attempts  to turn on  remote
echoing. One  does this when each key one  types appears twice on the
console. Turning off local echoing  will often eliminate one copy  of
the key.  The DIAL program  does not attempt  to change the  state of
remote echoing.

βO
	Turn on console typeout. See αβO.

αβO
	Turn off console typeout. Useful when output is already going
to a  file and you don't want to waste the  time it takes to type out
on your console as well.

βR
	Inhibit sending of LF after CR. Normally, when CR is typed, a
LF  is  invented  by the system and CRLF is sent to the foreign host.
This command inhibits sending the LF after the CR.

αβR
	Enable sending LF after CR. The inverse of the above command.

βK
	Inhibit duplexing LF after CR. The system normally types a LF
out  when  you  type  CR. This command inhibits that. This command is
different in effect from the other two, because it alters  only  what
appears on your screen, not what goes out over the line.

αβK
	Enable duplexing LF  after  CR.  The  inverse  of  the  above
command.

⊗X
	Set escape character. The escape character is normally set to
↑E but may be changed by this command. The next  character  typed  is
taken  to  be  the new escape character. This is useful for teletypes
only.

βI
	Open  input  file.  This  command  asks for a file name, then
proceeds to send said file to the foreign host.

αβI
	Close input file.

βD
	Open  output  file.  This  command asks for a file name, then
proceeds to write everything that comes from the foreign host on this
file.  Note  that  characters  you type, or characters from any input
file that is opened, do not  go  into  the  output  file  unless  the
foreign host is duplexing them.

αβD
	Close output file.

⊗Q
	Quit. Terminates connection and closes any  input  or  output
files that may be open. The connection is also closed by saying ↑C to
the TELNET and doing something else, but in this case, the input  and
output files are not closed.


βF
	Extend the last output file.  Asks for new file name if there
has not been any output yet.

αβF	Extend output file.  Always asks for a name.

In TELNET:

⊗C
	Send interrupt. This  is the network protocol for  "return to
monitor" or equivalent.

In DIAL:

βC
	Turn on control  character mode. In this mode  all characters
recieved from the dataphone are typed on your console.

αβC
	Turn off  control character mode.  In this mode,  octal codes
1-10,  16-37, and 177 are  flushed when recieved  from dataphone (not
typed on your console).

In PTYJOB:

⊗Z
	Quotes next character, including its control bits.

βM
	Enter transparent mode.  Sends all characters as if they were
quoted with ⊗Z except for αβM and ⊗Z.

αβM
	Leave transparent mode.
		IMP System Calls

	The IMP is similar to any other IO device, in that it may  be
initialized  with  an  INIT  and  released  with a RELEASE, but it is
different in that one must first open a  connection  before  one  may
expect to exchange data. Connections are opened and closed separately
for the receive side and the send side, even though  the  IO  channel
number  is  the  same.  One  may open and close connections liberally
without having to do any more than the first INIT.  To  get  all  the
various  special  functions,  the  user  does  an  MTAPE UUO with the
effective address pointing to a variable  length  table  whose  first
word  is  a  code  number. This number determines the function of the
UUO. These functions are as follows.
	The  status of the connection is contained in several places.
The actual connection status is  in  a  status  word,  one  for  each
connection.  If  you  have both a receive and a send connection, then
you will have two connections. MTAPE 2 gives you these status  words.
The bits are decoded as follows:

Name ---- Bit ----------- Explanation
RFCS	200000 LH	RFC sent.
RFCR	100000 LH	RFC received.
CLSS	040000 LH	Close sent
CLSR	020000 LH	Close received
INTINR	000100 LH	Interrupt by receiver
INTINS	000040 LH	Interrupt by sender

	Other bits may be on, but they are internal  to  the  system.
The  normal  state  of an open connection is 300000 in the left half.
When a connection is closed or closing, CLSS or CLSR will be  on.  No
more  data may be transmitted or received over the connection at this
point. The foreign host may  send  us  interrupts.  He  can  send  an
interrupt  from  receiver  or  an interrupt from sender. These can be
received as user interrupts or can be tested for explicitly by  MTAPE
12. Interrupts can be sent using MTAPE 9.
	More status bits occur in the IO status word,  which  can  be
gotten  with  a GETSTS UUO, or examined with a STATZ or STATO UUO, or
cleared with a SETSTS UUO. These bits are as follows:

Name ---- Bit ------------- Explanation
HDEAD	002000 RH	Host or destination IMP dead
CTROV	001000 RH	Foreign host sent us more bits than
			he had allocated.
RSET	000400 RH	Foreign host sent us a reset.
TMO	000200 RH	Timeout occurred.


	If  HDEAD  comes up, this means that the last message we sent
him stayed in the IMP network for 30 seconds or  more  without  being
eaten  by  the  host.   In this case, the IMP flushes the message and
sends us back a "host dead" message.
	CTROV  means  that  the  foreign host goofed. He sent us more
data than we allowed him. The system closes the  connection  in  this
case.
	RSET means that the host sent us a reset, which as  mentioned
before,  asks  us to clear all our tables of references to this host.
The connection is closed.
	TMO  means  that  your  job was in a wait state and timed out
(see MTAPE 15). This bit is set when a timeout occurs.
	User interrupts can be taken on a number of conditions. These
are described below.

 Name --- Bit -------------- Explanation ---------------------------
INTINR	000100 LH	Interrupt from foreign receive side
INTINS	000040 LH	Interrupt from foreign send side
INTINP	000010 LH	New data packet entered free storage. Next
			INPUT UUO will not wait.
INTIMS	000020 LH	Status change. One or more of the bits CLSS
			CLSR, RFCS, RFCR has changed.

	The  INTINP  interrupt is generated every time a regular data
message is received by the system. One can test for data received and
waiting in the system with an MTAPE 8 UUO.
	Now on to the MTAPEs themselves.  In  this  description,  the
function  code  is  given  and  named,  and the contents of the first
through Nth words of the MTAPE block are given. A  brief  explanation
follows if needed.
	Various  of these UUOs may go into a wait state. They will be
awakened either because of their normal  wakeup  condition,  or  some
special  condition. Some of the special conditions that may occur are
specified by the bits in the right half of the IO status word. If one
is  waiting  for input, for instance, and a reset arrives, the job is
awakened and RSET is set. An error bit is set if the wakeup  was  due
to  a  special condition, so the normal IN and OUT UUOs will not skip
if the wakeup was due to the normal wakeup condition.


	    Special MTAPE UUOs

function=0	Connect
    1		Status bits are placed here upon return
    2		Local socket number, 32 bits, right adjusted
    3		Wait flag. -1 for wait for connection.
    4		Byte size, or if sending, byte size is stored here
    5		Foreign socket number
    6		Host number is placed here, 8 bits, right adjusted

	An RFC is sent to the host whose number is in word 6 with the
local  socket  number taken from word 2 and the foreign socket number
taken from word 5. If word 3 is non-zero, the systen  goes  into  RFC
wait   until  timed  out (see MTAPE 15) or until an RFC with matching
socket numbers and host number arrives. If an RFC is already  pending
when  this  UUO  is  given,  it  will not wait, but will complete the
connection immediately. If you wish to open a receive connection, the
local  socket  number must be even and the foreign socket number must
be odd.
	If the wait flag (word 3) was on or an RFC was  pending,  and
the  local socket number was odd (Send side), the byte size is stored
in word 4.
	If  you are opening a receive connection, you may specify the
byte size of the connection. Our system allows byte sizes of 1, 2, 3,
4,  6,  8,  9,  12, 16, 18, 32, and 36 bits. Most other systems allow
only 8, 32, and 36 bits. The standard TELNET  connection  is  8  bits
with  the  right  hand  7  bits of each byte being an ASCII character
unless the high order bit is on, in which case  the  character  is  a
command  to the receiving TELNET. Notice that to change the byte size
in your buffer header, all you have to do is place the byte  size  in
bits  6  through  11 in the byte pointer word in the buffer header. A
byte size is established for the life of a connection and may not  be
changed until the connection is broken.

function=1	Listen
    1		Status bits are placed here
    2		Local socket number
    3		Wait flag
    4		Byte size of connection. Stored here if send

	This  does  not send out an RFC to anybody, but merely places
the local socket number in word 2 in the system link table. If word 3
is  non-zero,  the job is put into RFC wait. If an RFC arrives from a
foreign host with that socket number as the local  socket  number,  a
connection  is  made.  If the wait flag (word 3) was on or an RFC was
already waiting, and the local socket number was odd (send side), the
byte size is stored in word 4 when an RFC is received.


function=2	Status
    1		Status bits are placed here for send side
    2		Receive side status bits are placed here

	If the connection is not open, zero is stored. If a reset has
been received, both CLSS and CLSR will be on.

function=3	Terminate
    1		Status bits are placed here
    2		Local socket number
    3		Wait flag

	This sends a  close  to  the  foreign  host  for  the  socket
specified  in word 2. If word 3 is non-zero, the job is placed in CLS
wait until a return close is received,  or  the  CLS  timeout  occurs
(signified by TMO being on in IO status word).

function=4	Wait for connection complete
    1		Status is returned here
    2		Needs socket number here

	This is meaningful only if a  CONNECT  or  LISTEN  was  given
without  waiting  (word 3 = 0). In this case, the job is put into RFC
wait until an RFC arrives or a timeout occurs.

function=5	Dump. Dumps monitor tables
    1		Number of words of tables desired
    2		Address of place to put tables

	This dumps the monitor  tables  into  your  core  image.  The
format  of these tables is much too lengthy to be discussed here, but
is sort of described in IMPDDB[S,SYS] pages 6 and 7. The part that is
dumped is after the label SYSTBS.

function=6	Wakeup. Valid only if at I-level. Useful for
    		waking up process in wait state due to IMP.

	This UUO will wake up the main job if it is in any wait state
due to the IMP. It also sets TMO in the IO status bits.


function=7	Get socket numbers and host number
    1		host-link number, send side
    2		Local send socket
    3		Foreign receive socket
    4		Host-link number for receive side
    5		Local receive socket
    6		Foreign send socket

	A host-link number is a 16 bit right adjusted  quantity.  The
first  8  bits  are  the host number and the last 8 bits are the link
number.

function=8	Skip if any input is present

	This  skips  if  there  is input in free storage that has not
been transferred to the user's buffers.

function=9	Send interrupt
    1		Status bits returned here
    2		Need socket number here

	Sends  a  receive side interrupt if the socket number is even
and a send side interrupt if the socket number is odd.

function=10	Resurrect IMP if down

	This  is  a  privileged UUO and is applicable only if the IMP
system is down.

function=11	Bless this host
    1		Host number required here

	If  a  destination  IMP returns a host dead message, a bit is
set in the system and no further  transfers  are  permitted  to  that
host.  This  UUO clears that bit and sends a null message to the host
to see if he is still dead.

function=12	Test and clear interrupt bits
    1		Send side. 0 for no int., -1 for int. present
    2		Receive side. 0 for no int., -1 for int. present

	This  UUO  is  useful  if you have many IMP connections open.
When an interrupt occurs (INTINS, INTINR), the  bit  is  set  in  the
status  word  for  that  connection,  and  one  may  determine  which
connection generated the interrupt by use of this UUO.


function=13	Set allocation
    1		Function code. 0 for as specified, 1 for sys max,
		2 for min, and 3 for system default values.
    2		Number of bits of allocation (for type = 0)
    3		Number of messges of allocation (for type = 0)

	This  changes  the allocation we have given the foreign host.
If this UUO is not given, the system default value is used, which  is
fairly  small.  The  system  maximum  is  1024  words, and the system
minimum is 2 words. The default value is about 50 words. We  allocate
in two dimensions. We allocate both the number of bits and the number
of messages he may send. Since free storage blocks are about 50 words
long,  the  system  maximum  number  of  messages  is 1024/50. If the
function code (word 1) is zero, the  new  allocation  is  taken  from
words  2  and  3,  is  clipped  to  fit within the system maximum and
minimum, and set accordingly. Notice that if the  connection  is  not
yet open, this does not actually cause the allocation to happen, just
sets the values that will be  given.  Allocation  does  not  actually
occur until the first IN (INPUT) UUO is given, or a MTAPE 8 is given.
DO NOT EXPECT ANY INPUT OR INPUT INTERRUPT UNTIL ONE OF THESE UUOs IS
GIVEN! If we do not allocate him anything, nothing will happen!

function=14	What are the allocations
    1		Number of bits we have allocated him
    2		Number of messages we have allocated him
    3		Number of bits he has left
    4		Number of messages he has left
    5		Number of bits in free storage
    6		Number of messages in free storage
    7		Number of bits he has allocated us
    10		Number of messages he has allocated us

function=15	Set timeouts
    1		Word of 6-bit bytes. Gives number of 2-second units
    		for timeouts on CLS, RFNM, ALL, RFC, or INP
    		0 means wait indefinitely

	The system enters wait states for  at  least  five  different
reasons. In each of these cases, a timeout may be set. This UUO takes
in word 1 five timeouts in 6-bit fields, CLS  being  bits  0-5,  RFNM
6-11,  ALL  12-17,  RFC  18-23,  and  INP  24-29.  Bits 30-35 are not
currently used. When one of these timeouts occurs, error bits are not
set  except  for  RFNM,  ALL,  and  INP.  For RFC and CLS, the UUO in
progress just goes on as if it had never tried to wait. Note that  we
can  go  into CLS wait inside a CONNECT or LISTEN if the local socket
has a half-closed connection associated with it. For this reason,  it
is always good to wait at least a few seconds for the return CLS. The


system default values are 6 sec for CLS, 40 sec for RFNM, no  timeout
for ALL, RFC, and INP.

function=16	Get timeouts
    1		Current timeout word will be placed here

	In any operation which expects the status word to be returned
in  word  1  (CONNECT,  LISTEN,  etc),  an error code may be returned
instead in the rightmost 6-bits. These errors are as follows:

Name - Code ------------ Explanation ---------------------------
siu	1	Socket in use. This means there is a connection on
		that local socket number already.
ccs	2	Can't change socket numbers. This means a foreign
		socket number  has already  been set  and an  RFC
		received for  this  local socket number,  and you
		can't change the socket number because the foreign
		host already knows what it is.
sys	3	Horrible system error. Can't happen.
nla	4	No link available. System IMP capacity exceeded.
ilb	5	Illegal byte size.
idd	6	IMP dead.

	This completes the discussion of the monitor IMP calls